package com.jiajia.study.chapter01.nio;

import com.jiajia.study.utils.ByteBufferUtil;
import lombok.extern.slf4j.Slf4j;

import java.nio.ByteBuffer;

/**
 * ByteBuffer 常用方法
 * @author zjiajia
 * @date 2024/7/5 9:22
 */
@Slf4j
public class TestByteBufferNormalMethod {
    public static void main(String[] args) {
        // 分配空间
        ByteBuffer byteBuffer = ByteBuffer.allocate(16);
        ByteBufferUtil.debugAll(byteBuffer);
        // 往 buffer 中写数据
        byte[] bytes = {'1', '2', '3', '4','5','6','7','8','9','0'};
        byteBuffer.put(bytes);
        ByteBufferUtil.debugAll(byteBuffer);
        /**
         * 往 byteBuffer 中写数据，从 channel 中读数据
         * channel.read(byteBuffer);
         */
        byteBuffer.flip();
        // 从 buffer 中读数据
        byte b = byteBuffer.get();
        ByteBufferUtil.debugAll(byteBuffer);
        // 在 index = 1 的位置做一个标记
        byteBuffer.mark();
        byte b2 = byteBuffer.get();
        byte b3 = byteBuffer.get();
        byte b4 = byteBuffer.get();
        ByteBufferUtil.debugAll(byteBuffer);
        /**
         * 将 position 设置成 mark 的位置，
         * 可以重复进行读取
         *
         * 可以用来防止读取的过程出错，然后再次读取
         */
        byteBuffer.reset();
        ByteBufferUtil.debugAll(byteBuffer);
        /**
         * 从 byteBuffer 中读数据，往 channel 中写数据
         * channel.write(byteBuffer)
         */


    }
}
